RiskSense Spotlight:全球知名开源软件漏洞分析报告
开源软件 (OSS) 的出现快速改变了当代应用的构建方式及其依赖的底层代码。据预测,目前80%到90%的多数现代应用代码由开源组件构成。同样,很多赋能 DevOps 和 CI/CD 发展的工具本身也是开源项目,如 Jenkins、Kubernetes 和 Docker 等。开源软件还帮助组织机构降低软件成本并成为数字化变革和服务上云端的关键。2020年,Red Hat 公司发布报告指出,95%的组织机构认为开源软件对其业务具有重大的战略意义。
然而,开源变革本身也存在弱点。Red Hat 在报告中指出,企业使用开源软件时首先面临的就是代码安全问题。
虽然心脏出血漏洞和 Apache Struts 漏洞已成为家喻户晓的开源漏洞,但它们远非个案。开源软件正越来越多地遭到挖矿机、勒索软件和 DoS 攻击的侵扰。遗憾的是,开源软件漏洞是很多企业的盲点,它们也许并不能总是意识到应用中所使用的所有的开源项目和依赖关系。
为此,本期的 RiskSense Spotlight 报告主要关注当前一些最受欢迎的开源软件中的漏洞问题,涵盖50多个开源软件项目和2600多个漏洞。之后,我们通过该数据集对开源软件进行风险分析,从而揭示如下一些问题:
从真实发生攻击的可能性来看,哪些漏洞的风险最大?
哪些开源项目的漏洞和风险最大?
每个开源项目最严重的漏洞是什么?
开源漏洞是如何逐年增长的?
美国国家漏洞库 (NVD) 收录 OSS 漏洞的延时有多久?
引发漏洞的底层弱点是什么以及攻击者如何利用它们?
CVSS 和其它模型是如何对漏洞进行评级和分类的?
2019年是 OSS 漏洞创纪录的一年。
2019年,已公开开源 CVE漏洞的总数(968个)是之前任何一年的两倍还多。相比2018年和2017年,2019年的漏洞数量分别增长了了130%和127%,而2017年的漏洞总数在本研究报告中排名第二位。这种增加并非昙花一现,因为在2020年的前三个月内,新增 CVE 的数量仍然处于历史高位,加剧了开发人员、IT和安全团队管理组织机构攻击面的复杂度。
NVD 漏洞披露的长潜伏期引发多种问题。
美国国家漏洞库 (NVD) 收录开源软件漏洞耗时漫长。从漏洞首次公开披露到漏洞被收录到 NVD 的整个过程平均耗时54天。而耗时最长的案例是某严重的 PostgreSQL 漏洞,足足延迟1817天。119个CVE漏洞的收录延时超过1年,大约四分之一 (24%) 的CVE漏洞收录延时超过1个月。这种延时情况出现在严重程度不一的漏洞案例中,而“严重”等级的漏洞的平均延时时间最长。这种延时对依赖 NVD 作为主要的CVE数据来源和上下文信息的组织机构造成了严重的缺乏可见度问题。
Jenkins 和 MySQL 的漏洞数量最多。
Jenkins自动化服务器中存在的 CVE 漏洞数量最多,为646个;而 MySQL 以624个的数量紧随其后。这些项目也是漏洞造武器化程度最高的项目,为15个(存在 exploit 代码的漏洞数量)。与之相比,HashiCorp 的 Vagrant 总计仅有9个 CVE 漏洞,而其中有6个遭武器化利用,使其成为从百分比角度来看武器化程度最高的开源项目。Apache Tomcat、Magento、Kubernetes、Elasticsearch 和 JBoss 中都含有在真实攻击中热门或流行的漏洞。
跨站点脚本和输入验证弱点遭武器化的程度最高。
跨站点脚本 (XSS) 和输入验证弱点均为研究过程中最常见也最常被武器化的弱点类型。XSS 问题是第二大最常见的漏洞类型也是最常被武器化的弱点。同样,输入验证问题是第三大最常见的漏洞类型也是第二大武器化最严重的弱点。输入验证和访问控制问题都是真实攻击中最常见的问题。
现实中的罕见弱点也很重要。
虽然某些弱点极为少见,但在活跃的攻击活动中仍然非常流行。反序列化问题(28个 CVE)、代码注入(16个CVE)、错误处理(2个CVE)和容器错误(1个CVE)都见于在野攻击活动。对于开源代码安全而言,这种罕见性是一个好兆头,同时也提醒我们开源软件问题可遭大规模攻击。
我们主要分析了五年来最流行的一些开源项目的漏洞情况。我们以多种因素构建这一项目清单,如在 GitHub 上的流行程度、基于具体开源项目的公司的市场价值(如 Elastic 和 Elasticsearch),以及多种 OSS 软件列表如BOSS 指数。由此形成的数据集共包含54个开源项目。我们分析了过去五年来(从2015年到2020年前三个月)的每个项目,共计找到2694个CVE漏洞。
逐步集中的风险漏斗分析
虽然所有的漏洞都很重要,但攻击者在真实世界中利用的漏洞自然会对组织机构造成更多的直接风险。为此,我们在多种真实世界威胁上下文中分析了该数据集。这种以威胁为中心的分析为快速有效地修复最重要漏洞提供了强大的方法。基于如下上下文,分析形成了逐步集中的漏洞漏斗:
武器化漏洞:在所有的2694个漏洞中,只有89个即3.3%的漏洞被武器化,即存在能够利用该漏洞的已知 exploit 代码。
战略漏洞;18个漏洞可触发远程代码执行或提权后果。这类漏洞对于攻击者而言具有较高价值且加大了攻击的可能性和影响。
遭在野攻击热门漏洞:研究团队基于成为活跃攻击活动目标或可能产生广泛影响,将6个漏洞标记为“热门 (trending)”漏洞。
根据严重程度划分 CVE 漏洞
图表1(b) 展示了在 CVSS v2 评分模型中被评级为“中危”级别的多数 CVE 漏洞。从 OSS 数据集的角度而言,共有9.6%的CVE漏洞为“严重”级别,33.3%为“高危”级别,54.4%为“中危”级别,而2.6%为“低危”级别。
单从 CVE 漏洞的数量来看,2019年是开源漏洞的分水岭。好消息是对2019年漏洞的武器化率仍然较低。
漏洞数量多并不一定意味着某个具体的 OSS 项目质量差。
从漏洞总数来看,排名靠前的项目是 Jenkins、MySQL、GitLab、OpenStack 和 Magento。这些项目的 CVE 漏洞总数如下表 3(b) 所示。
然而,CVE的数量多并不一定意味着被武器化的漏洞数量也多。图表3 (c) 按照武器化率列出了项目列表。
多个开源项目的漏洞武器化率非常低或不存在。
关键项目和漏洞总结
如下部分强调了组织机构应该在风险管理实践中意识到的12个重要漏洞。它们有的是在活跃的威胁活动中热门的以及/或者因其可利用性和潜在影响力而具有高风险的漏洞。
Jenkins:Jenkins 是一款自动化服务器,供开发人员构建、测试并部署软件。如上所述,Jenkins 的 CVE 漏洞总数最多,为第三大 CVE 漏洞被武器化的 OSS。虽然目前未遭在野利用,但最近发现的 CVE-2020-2100 漏洞因被用于反射型 DDoS 攻击中而变得尤为重要。
JBoss:JBoss 是一款开源应用平台。JBoss 的CVE漏洞总量排名第8,达到88个。JBoss 被指易受最近产生的 Ghostcat 漏洞 (CVE-2020-1938) 影响,后者主要影响 Apache Tomcat,目前已是热门的在野利用漏洞。其它值得关注的 JBoss 漏洞包括 CVE-2017-12149(反序列化漏洞,已遭在野攻击)和更老旧的仍遭勒索软件攻击的漏洞 CVE-2010-0738。
Magento:Magento 是一款流行的开源电商平台。虽然在 Magento 所具有的154个漏洞中仅有3个被武器化,但它们都非常重要。CVE-2019-7932 可导致任意代码注入,目前已是热门的在野利用漏洞。CVE-2019-7139可导致 SQL 注入且可能此前已遭在野利用。同样,CVE-2016-4010 已被用于 “magecart” 攻击中,作为从 Magento 网站中窃取信用卡信息的一种方法。
Docker:Docker 中具有30个 CVE 漏洞,仅有2个被武器化。然而,其中的CVE-2019-5736可导致恶意 Docker 容器通过攻击主机的 runC 二进制获得对主机的 root 级别的控制。该漏洞还影响 Kubernetes 和 OpenShift。另外,保护不当的 Docker 部署已遭蠕虫 Graboid 攻击。
Kubernetes:除了受上述 runC 漏洞 (CVE-2019-5736) 影响外,Kubernetes 还受 CVE-2018-1002105 漏洞影响。该漏洞是热门的遭在野利用漏洞且可导致攻击者以任意用户的权限向 Kubernetes API 服务器发送完全授权的请求。
Elasticsearch:Elasticsaerch 以58个漏洞的总量排名第12。4个漏洞被武器化,其中2个可导致远程代码执行后果。值得注意的是,CVE-2015-1427在去年被用于多种攻击活动中,如密币挖矿、僵尸网络和 DDoS 攻击等。
Git:Git 在数据集中出现的频率很低,仅有两个 CVE 漏洞,但这并不意味着它未成为攻击的目标。攻击者并未针对 CVE 漏洞,而是针对保护薄弱的 GitHub、GitLab 和 BitBucket 账户以获取访问权限并勒索 Git 仓库寻求赏金。
所有的评分系统都显示,严重程度最高的漏洞被延时的情况最严重。
按开源项目看 NVD 的收录延时问题
虽然延时矩阵整体而言较高,但个体 OSS 项目之间也存在巨大差异。图表 4(b( 展示了所有案例项目的NVD收录平均延时情况(从高到低的顺序)。在总计47个漏洞中,其中23个漏洞的延时为10天或更久。
延时案例
为了更好地理解数据集中的漏洞,我们按照 CWE 分类从底层弱点的角度进行了分析,之后进一步强调了组成 OWASP Top 10 分类中的漏洞。最常见的至少有一个漏洞被武器化的常见的 CWE 漏洞列表如下。
XSS漏洞的数量如此之多的原因在于它是最常见的弱点类型而且也是漏洞奖励计划中赏金最高的类型。同样,CWE-20 输入验证不当问题是一个常见的类型,因为它涵盖了大量的潜在攻击模式。
然而,有一些关于被武器化且同时在野出现的热门漏洞结果值得关注。图表 5(b) 展示了被武器化的十大 CWE 弱点。XSS 弱点位列第一,输入验证不当位列第二。从武器化角度来看其它 CWE 弱点也值得注意。
接着,我们进一步分析了热门的在野利用弱点,如图表5(c) 所示。其中最值得注意的三个弱点并未在上述任何列表中提及。代码注入弱点虽然共包含17个 CVE 漏洞,但仅有1个遭武器化。错误处理虽然仅包含2个 CVE 漏洞,但其中1个既被武器化又是遭在野利用的热门漏洞,而数据集中唯一的一个容器错误弱点同样是被武器化且在野利用的热门弱点。
根据 OWASP Top 10 划分的弱点
开源软件在组织机构的攻击面中发挥的作用愈发重要。虽然开源带来了很多好处,但如何管理这一新的攻击面也是一种挑战。和更传统的软件相比,开源项目中出现新漏洞的速度也创造了历史记录,而单靠传统的评分系统如 CVSS 并不一定能够按照实际产生的最大风险对漏洞进行优先级排序。另外,相比传统软件通过标准资源如 NVD 报告 CVE 漏洞的方式,开源项目也远远落后。
遗憾的是,这些挑战包括漏洞总量、武器化率和 NVD 报告延时对每个具体项目产生的影响是不同的。对于开源软件而言,将真实世界的漏洞上下文集成到基于风险的漏洞管理中显得尤为重要。我们希望本报告数据能够为组织机构提供价值,且应用实际的开发、运维和安全实践中。
GitHub 推出安全新功能,帮助开源软件发现漏洞和机密信息
题图:Pixabay License
本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的
产品线。